From their inception, robots have been designed to perform tasks that people prefer not to do or cannot do safely. Cleaning and vacuuming, for example, are just the type of jobs that people would like to delegate to such mechanical helpers. The challenge, however, has been to design robots that can clean the floor of a home well enough to satisfy the exacting standards of the people the live in it. Although robots have been designed to vacuum floors, robots designed to perform mopping present unique challenges. In particular, such a robot should be able to dispense cleaning solution, scrub the floor with the solution, and then effectively remove the spent cleaning solution. Robots tend to perform unsatisfactorily, however, because hard deposits on the floor may require time for the cleaning solution to penetrate and removal of the dirty solution may leave streak marks on the floor. There is therefore a need for a cleaning robot able to implement a cleaning plan that enables the robot to apply cleaning solution, repeatedly scrub the floor with the solution, and leave the floor free of streak marks.